package com.yoda.mall.autoconfig.template;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.yoda.mall.autoconfig.properties.OssProperties;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

/**
 * 阿里云图片上传模板方法,返回请求路径url
 * @author wangjia
 * @date 2022/12/13
 * @Description
 */
public class OssTemplate {
    //将Ossproperties对象以构造方法传递过来
    private OssProperties ossproperties;

    public OssTemplate(OssProperties ossproperties) {
        this.ossproperties = ossproperties;
    }

    public String upload(String filename, InputStream is) throws FileNotFoundException {

        //拼写图片路径,当前时间+0a3b3288-3446-4420-bbff-f263d0c02d8e.jpg
        filename = new SimpleDateFormat("yyyy/MM/dd").format(new Date())
                + "/" + UUID.randomUUID().toString() + filename.substring(filename.lastIndexOf("."));
        // Endpoint以华东1（杭州）为例，其它Region请按实际情况填写。
        String endpoint = ossproperties.getEndpoint();
        // 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
        String accessKeyId = ossproperties.getAccessKeyId();
        String accessKeySecret = ossproperties.getAccessKeySecret();
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        // 创建PutObject请求。
        ossClient.putObject(ossproperties.getBucketName(), filename, is);
        ossClient.shutdown();

        //获取图片请求路径
        String url = ossproperties.getUrl() + filename;
        return url;
    }
}

